package factory_pattern.f2;

/**
 * 工厂方法模式
 * 工厂方法模式是 Java 中最常用的设计模式之一，属于创建型模式。定义一个创建对象的接口，
 * 让其子类自己决定实例化哪一个工厂类，工厂模式使其创建过程延迟到子类进行。
 * 区别：主要区别就是由一个 工厂类变成了多个了，降低了耦合度。如果新增一个游戏类，
 * 相应的也只需在新增一个工厂类而已， 并且完美的遵循了开放-封闭原则
 */
public class Factory2 {
  private static final String LOL="LOL";
  private static final String DNF="DNF";
  private static final String WOW="WOW";

  public static void main(String[] args) {

    Game game3=new LOLFactory().playGame();
    Game game4=new DNFFactory().playGame();
    Game game5=new WOWFactory().playGame();
    game3.play();
    game4.play();
    game5.play();
  }
}


interface Game{
  void play();
}


class LOL implements Game{
  public void play() {
    System.out.println("正在玩LOL...");
  }
}

class DNF implements Game{
  public void play() {
    System.out.println("正在玩DNF...");
  }
}

class WOW  implements Game{
  public void play() {
    System.out.println("正在玩WOW...");
  }
}


interface ComputerFactory2{
//  Game playGame(String game);
}

class LOLFactory implements ComputerFactory2{
  public Game playGame() {
    return new LOL();
  }
}

class DNFFactory implements ComputerFactory2{
  public Game playGame() {
    return new DNF();
  }
}

class WOWFactory implements ComputerFactory2{
  public Game playGame() {
    return new WOW();
  }
}